package com.lry.util.tree;

import java.util.List;

/**
 * 树生成工具
 *
 * @author 李瑞益
 */
public class TreeBuilder<T> {

    /**
     * 生成树算法
     */
    private ITreeArithmetic<T> arithmetic;

    public TreeBuilder(){
        //默认算法
        this.arithmetic = new TreeArithometic<>();
    }

    public TreeBuilder(ITreeArithmetic<T> arithmetic){
        this.arithmetic = arithmetic;
    }

    /**
     * 对指定条件下的数据生成树
     * @param parentId 指定生成树的父id
     * @return 指定条件下的树
     */
    public List<TreeNode> build(List<T> list, String parentId) {
        return arithmetic.build(list,parentId);
    }

    /**
     * 不指定父级id的情况下，无父级id的为父节点
     * @param list 源数据
     * @return 树
     */
    public List<TreeNode> build(List<T> list) {
        return arithmetic.build(list,null);
    }
}
